package controlador;

import java.io.File;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
import modelo.Juego;
import vista.VentanaAplicacion;
import vista.VistaEleccionDeNivel;


public class BotonCargarPartida extends Boton {
	public BotonCargarPartida(String url, int width, int height) {
		super(url, width, height);
	}

	private void cargarJuego(File xmlStream) throws SAXException,
			IOException {

		DocumentBuilder builder;
		
		try {
			
			builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			Document docXml = builder.parse(xmlStream);
			
			Juego.obtenerJuego().fromElement(docXml.getDocumentElement());
			
		} catch (ParserConfigurationException e) {
			
			// No deberia lanzarse un error de configuracion
			e.printStackTrace();
			
		}

	}

	protected void oprimir() {

		JFileChooser cargarArchivo = new JFileChooser();

		cargarArchivo.setFileSelectionMode(JFileChooser.FILES_ONLY);

		int resultado = cargarArchivo.showOpenDialog(null);

		// regresa al principal si se cancela la carga de archivo
		if (resultado == JFileChooser.CANCEL_OPTION)
			return;

		File archivo = cargarArchivo.getSelectedFile();

		try {

			cargarJuego(archivo);
			VentanaAplicacion.obtenerVentana().setContentPane(new VistaEleccionDeNivel());

		} catch (SAXException e) {

			JOptionPane.showMessageDialog(this,
					"No ha seleccionado un tipo de archivo valido\n"
							+ "No se lo puede interpretar\n"
							+ "Archivo seleccionado: "
							+ archivo.getAbsoluteFile(),
					"Error al Interpretar Archivo", JOptionPane.ERROR_MESSAGE);

		} catch (IOException e) {

			JOptionPane.showMessageDialog(this,
					"Se ha fallado en la carga del archivo: \n"
							+ archivo.getAbsoluteFile(),
					"Error al Cargar Archivo", JOptionPane.ERROR_MESSAGE);

		}

	}

}
